/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import beans.B_ControlAuditoria;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import beans.B_Pregunta;
import db.DB_Pregunta;

/**
 *
 * @author JoseHernan
 */
public class C_Pregunta extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);
        //Preguntamos si estamos logueados
        if (session.getAttribute("userName") != null) {
            String action = request.getParameter("action");
            String userName = session.getAttribute("userName").toString();
            String mensaje = "";
            int flagAccion = 0;
            String id = request.getParameter("id");
            //Parameters

            String codigo = request.getParameter("codigo");
            String pesoItem = request.getParameter("pesoItem");
            String pregunta = request.getParameter("pregunta");
            String observacion = request.getParameter("observacion");
            String recomendacion = request.getParameter("recomendacion");
            String isPreguntaCumplimiento = request.getParameter("isPreguntaCumplimiento");
            String idControlAuditoria = request.getParameter("idControlAuditoria");

            B_Pregunta obj;
            B_ControlAuditoria objControlAuditoria;
            //New
            if (action.equals("n")) {
                //Set Parameters
                obj = new B_Pregunta();
                objControlAuditoria = new B_ControlAuditoria();
                objControlAuditoria.setId(Integer.parseInt(idControlAuditoria));
                obj.setObjControlAuditoria(objControlAuditoria);
                obj.setCodigo(codigo);
                obj.setPesoItem(Integer.parseInt(pesoItem));
                obj.setPregunta(pregunta);
                obj.setObservacion(observacion);
                obj.setRecomendacion(recomendacion);
                obj.setUser(userName);
                obj.setIsPreguntaCumplimiento(Boolean.parseBoolean(isPreguntaCumplimiento));
                mensaje = DB_Pregunta.crud(obj, action);
                flagAccion = 1;
            } //Update
            else if (action.equals("u")) {
                obj = new B_Pregunta();
                obj.setId(Integer.parseInt(id));
                objControlAuditoria = new B_ControlAuditoria();
                objControlAuditoria.setId(Integer.parseInt(idControlAuditoria));
                obj.setObjControlAuditoria(objControlAuditoria);
                obj.setCodigo(codigo);
                obj.setPesoItem(Integer.parseInt(pesoItem));
                obj.setPregunta(pregunta);
                obj.setObservacion(observacion);
                obj.setRecomendacion(recomendacion);
                obj.setUser(userName);
                obj.setIsPreguntaCumplimiento(Boolean.parseBoolean(isPreguntaCumplimiento));
                mensaje = DB_Pregunta.crud(obj, action);
                flagAccion = 1;
            } //Delete
            else if (action.equals("d")) {
                obj = new B_Pregunta();
                obj.setId(Integer.parseInt(id));
                obj.setIsPreguntaCumplimiento(Boolean.parseBoolean(isPreguntaCumplimiento));
                mensaje = DB_Pregunta.crud(obj, action);
                flagAccion = 1;
            } else if (action.equals("ds")) {
                String[] itemsDelete = id.split(",");
                //Verificamos que tenga mas de 1 item
                if (itemsDelete.length > 0) {
                    for (int i = 0; i < itemsDelete.length; i++) {
                        obj = new B_Pregunta();
                        obj.setId(Integer.parseInt(itemsDelete[i]));
                        mensaje += DB_Pregunta.crud(obj, "d");
                        if ((i + 1) < itemsDelete.length) {
                            mensaje += "***";
                        }
                    }
                }
                flagAccion = 1;
            } else if (action.equals("get_preguntas")) {
                mensaje = getObjHtml(Integer.parseInt(idControlAuditoria), Boolean.parseBoolean(isPreguntaCumplimiento));
                flagAccion = 1;
            }
            if (flagAccion == 0) {
                mensaje = "La página solicitada no existe.";
                response.sendRedirect("mensaje.jsp?mensaje=" + mensaje + "&pagina=home.jsp");
            } else {
//                if (mensaje.equals("OK")) {
//                    mensaje += getObjHtml(Integer.parseInt(idControlAuditoria), Boolean.parseBoolean(isPreguntaCumplimiento));
//                }
                out.write(mensaje);
            }
        } else {
            //WITHOUT SESSION
            String mensaje = "Su sesion a expirado, ingrese nuevamente.";
            response.sendRedirect("mensaje.jsp?mensaje=" + mensaje + "&pagina=index.jsp");
        }
    }

    public String getObjHtml(int idControlAuditoria, boolean isCumplimiento) {
        StringBuilder html = new StringBuilder();
        ArrayList<B_Pregunta> listPregunta = DB_Pregunta.getListByIdControlAuditoriaAndIsCumplimiento(idControlAuditoria, isCumplimiento);
        B_Pregunta objPregunta;
        if (listPregunta.size() > 0) {
            html.append("<table class=\"table table-condensed table-hover table-bordered\">");
            html.append("<thead>");
            html.append("<tr>");
            html.append("<th>Nº</th>");
            html.append("<th>Código</th>");
            html.append("<th>Peso</th>");
            html.append("<th>Pregunta</th>");
            html.append("<th colspan=\"4\">Acciones</th>");
            html.append("</tr>");
            html.append("</thead>");
            html.append("<tbody>");
            for (int j = 0; j < listPregunta.size(); j++) {
                objPregunta = listPregunta.get(j);
                html.append("<tr id=\"id_pregunta_").append(objPregunta.getId()).append("\">");
                html.append("<td>");
                html.append(j + 1);
                html.append("</td>");
                html.append("<td>");
                html.append(objPregunta.getCodigo());
                html.append("</td>");
                html.append("<td>");
                html.append(objPregunta.getPesoItem()).append("%");
                html.append("</td>");
                html.append("<td>");
                html.append(objPregunta.getPregunta());
                html.append("</td>");
                html.append("<td width=\"1\">");
                html.append("<a class=\"tooltips\" data-original-title=\"Editar\" href=\"#basic\" data-toggle=\"modal\" onclick=\"changeDataModalCustom2('View/Pregunta/V_Pregunta_Update.jsp?action=u&id=").append(objPregunta.getId()).append("&idControlAuditoria=").append(idControlAuditoria).append("&isPreguntaCumplimiento=").append(String.valueOf(isCumplimiento)).append("', '40%');\"><i class=\"fa fa-pencil-square\"></i></a>");
                html.append("</td>");
                html.append("<td width=\"1\">");
                html.append("<a href=\"#basic\" data-toggle=\"modal\" onClick=\"deletePregunta(").append(objPregunta.getId()).append(", '").append(String.valueOf(isCumplimiento)).append("');\"><i class=\"fa fa-trash-o\"></i></a>");
                html.append("</td>");
                html.append("<td width=\"1\">");
                if (!isCumplimiento) {
                    html.append("<a href=\"#basic\" data-toggle=\"modal\" onClick=\"getTiposEvaluacion(").append(objPregunta.getId()).append(");\" title='Tipos de Evaluacion'><i id='icon-pregunta-te-"+objPregunta.getId()+"' class=\"fa fa-edit\"></i></a>");
                }
                html.append("</td>");
                html.append("<td width=\"1\">");
                html.append("<a class=\"tooltipModal\" data-container=\"body\" data-placement=\"top\" data-original-title=\"Visualizar Vulnerabilidades\" href=\"#basic\" data-toggle=\"modal\" onclick=\"getSubTable(").append(objPregunta.getId()).append(");\"><i id=\"icon-pregunta-").append(objPregunta.getId()).append("\" class=\"fa fa-expand\"></i></a>");
                html.append("</td>");
                html.append("</tr>");
            }
            html.append("</tbody>");
            html.append("</table>");
        } else {
            html.append("<div class=\"alert alert-warning\" style=\"margin-bottom: 0px;\">");
            html.append("No se encontraron <strong>Preguntas</strong> registradas.");
            html.append("</div>");
        }
        return html.toString();
    }
}
